<!DOCTYPE html>
<html>
<head>
    <title>Widget binding</title>
    <meta charset="utf-8">
    <link href="../content/shared/styles/examples-offline.css" rel="stylesheet">
    <link href="../../styles/kendo.common.min.css" rel="stylesheet">
    <link href="../../styles/kendo.rtl.min.css" rel="stylesheet">
    <link href="../../styles/kendo.default.min.css" rel="stylesheet">
    <link href="../../styles/kendo.dataviz.min.css" rel="stylesheet">
    <link href="../../styles/kendo.dataviz.default.min.css" rel="stylesheet">
    <script src="../../js/jquery.min.js"></script>
    <script src="../../js/kendo.all.min.js"></script>
    <script src="../content/shared/js/console.js"></script>
    <script>
        
    </script>
    
    
</head>
<body>
    
        <a class="offline-button" href="../index.html">Back</a>
    
    <div id="example">
    <table class="metrotable">
        <tbody>
        <tr>
            <td>
                <h4>AutoComplete:</h4>
                <input data-role="autocomplete" data-text-field="name" data-bind="source: colors, value: autoCompleteValue"/>
            </td>
            <td colspan="2" rowspan="3">
                <h4>Grid</h4>
                <div data-role="grid" data-sortable="true" data-editable="true" data-columns='["Name", "Price", "UnitsInStock", {"command": "destroy"}]' data-bind="source: gridSource"></div>
            </td>
        </tr>
        <tr>
            <td>
                <h4>ComboBox:</h4>
                <select data-role="combobox" data-text-field="name" data-value-field="value" data-bind="source: colors, value: comboBoxValue"></select>
            </td>
        </tr>
        <tr>
            <td>
                <h4>DropDownList:</h4>
                <select data-role="dropdownlist" data-text-field="name" data-value-field="value" data-bind="source: colors, value: dropDownListValue"></select>
            </td>
        </tr>
        <tr>
            <td>
                <h4>NumericTextBox:</h4>
                <input data-role="numerictextbox" data-format="c" data-bind="value: numericTextBoxValue" />
            </td>
            <td rowspan="3">
                <h4>Splitter</h4>
                <div data-role="splitter" data-panes="[{size:'30%', collapsible:true},{size:'70%'}]">
                    <div>Pane 1</div>
                    <div>Pane 2</div>
                </div>
            </td>
            <td rowspan="3">
                <h4>TabStrip</h4>
                <div data-role="tabstrip" data-animation="false">
                    <ul>
                        <li class="k-state-active">First</li>
                        <li>Second</li>
                    </ul>
                    <div>
                        <h4>First page:</h4>
                        Pick a time: <input data-role="timepicker" data-bind="value: timePickerValue"/>
                    </div>
                    <div>
                        <h4>Second page:</h4>
                        Time is: <span data-bind="text: displayTimePickerValue"></span>
                    </div>
                </div>
            </td>
        </tr>
        <tr>
            <td>
                <h4>DatePicker:</h4>
                <input data-role="datepicker" data-bind="value: datePickerValue" />
            </td>
        </tr>
        <tr>
            <td>
                <h4>TimePicker:</h4>
                <input data-role="timepicker" data-bind="value: timePickerValue" />
            </td>
        </tr>
        <tr>
            <td>
                <h4>MultiSelect:</h4>
                <select multiple="multiple" data-role="multiselect" data-text-field="name" data-value-field="value" data-bind="source: colors, value: multiSelectValue"></select>
            </td>
            <td>
                <h4>Slider:</h4>
                <input data-role="slider" data-bind="value: sliderValue" />
            </td>        
            <td>
                <h4>TreeView</h4>
                <div data-role="treeview" data-drag-and-drop="true" data-bind="source: treeviewSource"></div>
            </td>
        </tr>
        <tr>
            <td colspan="3">
                <div class="box">
                <h4>Current view model state</h4>
<pre>
{
    autoCompleteValue: <span data-bind="text: displayAutoCompleteValue"></span>,
    comboBoxValue: <span data-bind="text: displayComboBoxValue"></span>,
    dropDownListValue: <span data-bind="text: displayDropDownListValue"></span>,
    numericTextBoxValue: <span data-bind="text: displayNumericTextBoxValue"></span>,
    datePickerValue: <span data-bind="text: displayDatePickerValue"></span>,
    timePickerValue: <span data-bind="text: displayTimePickerValue"></span>,
    multiSelectValue: <span data-bind="text: displayMultiSelectValue"></span>,
    gridSource: [
<span data-bind="text: displayGridSource"></span>    ],
    sliderValue: <span data-bind="text: sliderValue"></span>,
    treeviewSource: [
<span data-bind="text: displayTreeviewSource"></span>    ]
}
</pre>
                </div>
            </td>
        </tr>
        </tbody>
    </table>
    <script>
        function tab() {
            var tabs = "";

            for (var i = 0; i < stringify.level; i++) {
                tabs += "\t";
            }

            return tabs;
        }

        function stringify(items) {
            var item,
                itemString,
                levelString = "";

            for (var i = 0; i < items.length; i++) {
                item = items[i];

                if (!item.items) {
                    itemString = kendo.stringify(item);
                } else {
                    stringify.level++;
                    var subnodes = stringify(item.items);
                    stringify.level--;

                    delete item.items;

                    itemString = kendo.stringify(item);

                    itemString = itemString.substring(0, itemString.length - 1);

                    itemString += ",\"items\":[\r\n" + subnodes + tab() + "]}";
                }

                levelString += tab() + itemString;

                if (i != items.length - 1) {
                    levelString += ",";
                }

                levelString += "\r\n";
            }

            return levelString;
        }

        stringify.level = 1;

        $(document).ready(function() {
            var Node = kendo.data.Node;
            var viewModel = kendo.observable({
                autoCompleteValue: null,
                colors: [
                    { name: "Red", value: "#f00" },
                    { name: "Green", value: "#0f0" },
                    { name: "Blue", value: "#00f" }
                ],
                displayAutoCompleteValue: function() {
                    var autoCompleteValue = this.get("autoCompleteValue");
                    return kendo.stringify(autoCompleteValue);
                },
                comboBoxValue: null,
                displayComboBoxValue: function() {
                    var comboBoxValue = this.get("comboBoxValue");
                    return kendo.stringify(comboBoxValue);
                },
                dropDownListValue: null,
                displayDropDownListValue: function() {
                    var dropDownListValue = this.get("dropDownListValue");
                    return kendo.stringify(dropDownListValue);
                },
                numericTextBoxValue: 10,
                displayNumericTextBoxValue: function() {
                    var numericTextBoxValue = this.get("numericTextBoxValue");

                    return kendo.toString(numericTextBoxValue, "c");
                },
                datePickerValue: new Date(),
                displayDatePickerValue: function() {
                    var datePickerValue = this.get("datePickerValue");
                    return kendo.toString(datePickerValue, "yyyy-MM-dd");
                },
                timePickerValue: new Date(),
                displayTimePickerValue: function() {
                    var timePickerValue = this.get("timePickerValue");

                    return kendo.toString(timePickerValue, "hh:mm:ss");
                },
                multiSelectValue: [],
                displayMultiSelectValue: function() {
                    var multiSelectValue = this.get("multiSelectValue");
                    return kendo.stringify(multiSelectValue);
                },
                gridSource: [
                    { Name: "Socks", Price: 18.00, UnitsInStock: 39 },
                    { Name: "Gloves", Price: 19.00, UnitsInStock: 17 },
                    { Name: "Shoes", Price: 97.00, UnitsInStock: 29 }
                ],
                displayGridSource: function() {
                    return stringify(this.get("gridSource").toJSON());
                },
                sliderValue: 5,
                treeviewSource: kendo.observableHierarchy([
                    { text: "Andrew", expanded: true, items: [
                        { text: "Nancy" },
                        { text: "Steve" }
                    ] }
                ]),
                displayTreeviewSource: function() {
                    return stringify(this.get("treeviewSource").toJSON());
                }
            });

            viewModel.autoCompleteValue = viewModel.colors[1];
            viewModel.dropDownListValue = viewModel.colors[0];
            viewModel.comboBoxValue = viewModel.colors[0];

            kendo.bind($("table"), viewModel);
        });
    </script>
    <div class="box">
        <h4>View source code:</h4>
    <pre class="prettyprint">
&lt;table&gt;
    &lt;tr&gt;
        &lt;td&gt;
            &lt;h4&gt;AutoComplete:&lt;/h4&gt;
            &lt;input data-role=&quot;autocomplete&quot;
            data-text-field=&quot;name&quot;
            data-bind=&quot;source: colors, value: autoCompleteValue&quot;/&gt;
        &lt;/td&gt;
        &lt;td colspan=&quot;2&quot; rowspan=&quot;3&quot;&gt;
            &lt;h4&gt;Grid&lt;/h4&gt;
            &lt;div data-role=&quot;grid&quot;
            data-sortable=&quot;true&quot;
            data-editable=&quot;true&quot;
            data-columns='[&quot;Name&quot;, &quot;Price&quot;, &quot;UnitsInStock&quot;, {&quot;command&quot;: &quot;destroy&quot;}]'
            data-bind=&quot;source: gridSource&quot;&gt;&lt;/div&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;
            &lt;h4&gt;ComboBox:&lt;/h4&gt;
            &lt;select data-role=&quot;combobox&quot;
            data-text-field=&quot;name&quot;
            data-value-field=&quot;value&quot;
            data-bind=&quot;source: colors, value: comboBoxValue&quot;&gt;&lt;/select&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;
            &lt;h4&gt;DropDownList:&lt;/h4&gt;
            &lt;select data-role=&quot;dropdownlist&quot;
            data-text-field=&quot;name&quot;
            data-value-field=&quot;value&quot;
            data-bind=&quot;source: colors, value: dropDownListValue&quot;&gt;&lt;/select&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;
            &lt;h4&gt;NumericTextBox:&lt;/h4&gt;
            &lt;input data-role=&quot;numerictextbox&quot;
            data-format=&quot;c&quot;
            data-bind=&quot;value: numericTextBoxValue&quot; /&gt;
        &lt;/td&gt;
        &lt;td rowspan=&quot;3&quot;&gt;
            &lt;h4&gt;Splitter&lt;/h4&gt;
            &lt;div data-role=&quot;splitter&quot;
            data-panes=&quot;[{size:'30%', collapsible:true},{size:'70%'}]&quot;&gt;
                &lt;div&gt;Pane 1&lt;/div&gt;
                &lt;div&gt;Pane 2&lt;/div&gt;
            &lt;/div&gt;
        &lt;/td&gt;
        &lt;td rowspan=&quot;3&quot;&gt;
            &lt;h4&gt;TabStrip&lt;/h4&gt;
            &lt;div data-role=&quot;tabstrip&quot; data-animation=&quot;false&quot;&gt;
                &lt;ul&gt;
                    &lt;li class=&quot;k-state-active&quot;&gt;First&lt;/li&gt;
                    &lt;li&gt;Second&lt;/li&gt;
                &lt;/ul&gt;
                &lt;div&gt;
                    &lt;h4&gt;First page:&lt;/h4&gt;
                    Pick a time: &lt;input data-role=&quot;timepicker&quot;
                    data-bind=&quot;value: timePickerValue&quot;/&gt;
                &lt;/div&gt;
                &lt;div&gt;
                    &lt;h4&gt;Second page:&lt;/h4&gt;
                    Time is: &lt;span data-bind=&quot;text: displayTimePickerValue&quot;&gt;&lt;/span&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;
            &lt;h4&gt;DatePicker:&lt;/h4&gt;
            &lt;input data-role=&quot;datepicker&quot; data-bind=&quot;value: datePickerValue&quot; /&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;
            &lt;h4&gt;TimePicker:&lt;/h4&gt;
            &lt;input data-role=&quot;timepicker&quot; data-bind=&quot;value: timePickerValue&quot; /&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;
            &lt;h4&gt;MultiSelect:&lt;/h4&gt;
            &lt;select multiple=&quot;multiple&quot;
            data-role=&quot;multiselect&quot;
            data-text-field=&quot;name&quot;
            data-value-field=&quot;value&quot;
            data-bind=&quot;source: colors, value: multiSelectValue&quot;&gt;&lt;/select&gt;
        &lt;/td&gt;
        &lt;td&gt;
            &lt;h4&gt;Slider:&lt;/h4&gt;
            &lt;input data-role=&quot;slider&quot;
            data-bind=&quot;value: sliderValue&quot; /&gt;
        &lt;/td&gt;        
        &lt;td&gt;
            &lt;h4&gt;TreeView&lt;/h4&gt;
            &lt;div data-role=&quot;treeview&quot;
            data-drag-and-drop=&quot;true&quot;
            data-bind=&quot;source: treeviewSource&quot;&gt;&lt;/div&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;
    </pre>
    </div>
    <div class="box">
        <h4>View model source code:</h4>
        <pre class="prettyprint">
var viewModel = kendo.observable({
    autoCompleteValue: null,
    colors: [
        { name: "Red", value: "#f00" },
        { name: "Green", value: "#0f0" },
        { name: "Blue", value: "#00f" }
    ],
    displayAutoCompleteValue: function() {
        var autoCompleteValue = this.get("autoCompleteValue");
        return kendo.stringify(autoCompleteValue);
    },
    comboBoxValue: null,
    displayComboBoxValue: function() {
        var comboBoxValue = this.get("comboBoxValue");
        return kendo.stringify(comboBoxValue);
    },
    dropDownListValue: null,
    displayDropDownListValue: function() {
        var dropDownListValue = this.get("dropDownListValue");
        return kendo.stringify(dropDownListValue);
    },
    numericTextBoxValue: 10,
    displayNumericTextBoxValue: function() {
        var numericTextBoxValue = this.get("numericTextBoxValue");

        return kendo.toString(numericTextBoxValue, "c");
    },
    datePickerValue: new Date(),
    displayDatePickerValue: function() {
        var datePickerValue = this.get("datePickerValue");
        return kendo.toString(datePickerValue, "yyyy-MM-dd");
    },
    timePickerValue: new Date(),
    displayTimePickerValue: function() {
        var timePickerValue = this.get("timePickerValue");

        return kendo.toString(timePickerValue, "hh:mm:ss");
    },
    multiSelectValue: [],
    displayMultiSelectValue: function() {
        var multiSelectValue = this.get("multiSelectValue");
        return kendo.stringify(multiSelectValue);
    },
    gridSource: [
        { Name: "Chai", Price: 18.00, UnitsInStock: 39 },
        { Name: "Chang", Price: 19.00, UnitsInStock: 17 },
        { Name: "Mishi Kobe Niku", Price: 97.00, UnitsInStock: 29 }
    ],
    displayGridSource: function() {
        return stringify(this.get("gridSource"));
    },
    treeviewSource: kendo.observableHierarchy([
        { text: "Andrew", expanded: true, items: [
            { text: "Nancy" },
            { text: "Steve" }
        ] }
    ]),
    displayTreeviewSource: function() {
        return stringify(this.get("treeviewSource").toJSON());
    }
});

viewModel.autoCompleteValue = viewModel.colors[1];
viewModel.dropDownListValue = viewModel.colors[0];
viewModel.comboBoxValue = viewModel.colors[0];

kendo.bind($("table"), viewModel);
        </pre>
    </div>
    <style scoped>
        .metrotable {

            width: 100%;
        }

        .metrotable > tbody > tr > td {
            display: table-cell;
            padding: 5px 20px 5px 0;
            font-size: 1em;
            text-transform: none;
            border: 0;
            vertical-align: top;
        }
        
        .metrotable > tbody > tr > th {
            border-bottom: 1px solid #ccc;
            color: #787878;
            font-size: 1.4em;
            font-weight: lighter;
            padding: 0 1em 0 0;
            text-align: left;
        }
        
        .metrotable td > .k-splitter {
            height: 130px;
            width: 300px;
        }
        
        .metrotable td > .k-slider {
            width: 300px;
        }
        
        .metrotable td > .k-tabstrip {
            width: 200px;
        }

        #example td h4 {
            margin: 0;
            padding: 0 0 5px 0;
            width: 200px;
        }

        td pre {
            font-size: 11px;
        }
    </style>
</div>


    
    
</body>
</html>
